/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package vo;

import java.util.Date;

import java.io.Serializable;
import java.util.Collection;
import java.util.Date;
import javax.persistence.*;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;

@Entity
@Table(name = "pessoa")
@Inheritance(strategy=InheritanceType.JOINED)
public class PessoaVO implements Serializable{

    @Id
    @SequenceGenerator( name = "cod_pessoa", sequenceName = "cod_pessoa_seq",allocationSize = 1 )
    @GeneratedValue( strategy = GenerationType.SEQUENCE, generator="cod_pessoa")
    @Column(name="cod_pessoa", nullable = false)
    private int codPessoa;
    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name="cod_endereco", insertable=true, updatable=true) 
    @Fetch(FetchMode.JOIN) 
    @Cascade(CascadeType.SAVE_UPDATE)
    private EnderecoVO endereco;
    @Column (name = "nome",nullable = false)
    private String nome;
    @Column (name="rg")
    private String rg;
    @Column (name="cpf")
    private String cpf;
    @Column (name="tel_residencial")
    private String telResidencial;
    @Column (name="tel_celular")
    private String telCelular;
    @Column (name="data_nasc")
    @Temporal(TemporalType.DATE)
    private Date dataNascimento;
    @Column (name="data_cadastro")
    @Temporal(TemporalType.DATE)
    private Date dataCadastro;
    @Column (name = "ativo", nullable = false)
    private boolean ativo;


     //Construtor Vazio
    public PessoaVO(){
    }

    //Contrutor com Parâmetros
    public PessoaVO(int codPessoa, EnderecoVO endereco, String nome, String rg, String cpf, String telResidencial, String telCelular, Date dataNascimento, Date dataCadastro){
        this.setCodPessoa(codPessoa);
        this.setEndereco(endereco);
        this.setNome(nome);
        this.setRg(rg);
        this.setCpf(cpf);
        this.setTelResidencial(telResidencial);
        this.setTelCelular(telCelular);
        this.setDataNascimento(dataNascimento);
        this.setDataCadastro(dataCadastro);
        this.ativo=true;
    }


    //Métodos Get() e Set()
    public int getCodPessoa() {
        return codPessoa;
    }

    public void setCodPessoa(int cod_pessoa) {
        this.codPessoa = cod_pessoa;
    }

    public String getCpf() {
        return cpf;
    }

    public void setCpf(String cpf) {
        this.cpf = cpf;
    }

    public Date getDataCadastro() {
        return dataCadastro;
    }

    public void setDataCadastro(Date dataCadastro) {
        this.dataCadastro = dataCadastro;
    }

    public Date getDataNascimento() {
        return dataNascimento;
    }

    public void setDataNascimento(Date dataNascimento) {
        this.dataNascimento = dataNascimento;
    }

    public EnderecoVO getEndereco() {
        return endereco;
    }

    public void setEndereco(EnderecoVO endereco) {
        this.endereco = endereco;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getRg() {
        return rg;
    }

    public void setRg(String rg) {
        this.rg = rg;
    }

    public String getTelCelular() {
        return telCelular;
    }

    public void setTelCelular(String telCelular) {
        this.telCelular = telCelular;
    }
      public String getTelResidencial() {
        return telResidencial;
    }

    public void setTelResidencial(String telResidencial) {
        this.telResidencial = telResidencial;
    }

     public boolean isAtivo() {
        return ativo;
    }

    public void setAtivo(boolean ativo) {
        this.ativo = ativo;
    }


}
